查看手册
如:git help log
或者git log --help
创建仓库的两种方式
-
本地初始化
cd到目标文件夹下,执行
git init
。跟远程建立连接
git remote add <name> <url>
name一般是取origin。 -
克隆远程仓库到本地
git clone <url>
git clone默认会把远程仓库整个给clone下来,
但只会在本地默认创建一个master分支,
如果远程还有其他的分支,此时用git branch -a查看所有分支。
可以用git checkout -t origin/<branch_name>
来拉取某个分支。
查看仓库状态
git status
Untracked files指未受控的文件。
Changes to be committed指受控文件发生了改变,还没commit。
添加文件到暂存区
git add
git add FileName
add文件。
git add FolderName/
add文件夹。
提交
git commit -m "add readme.txt"
。
提交修改分为两步,先把修改的文件add到暂存区,然后commit到仓库。如果有远程仓库的话,还要push到远程仓库。
查看提交记录
git log
要输入一个q
才能退出log的状态。
git log --pretty=oneline
单行显示,简写git log --oneline
。
git log -p a.txt
查看a.txt的log。
git log --author=Tom
查看提交人Tom的提交记录。
撤销修改
git checkout readme.txt
checkout是指还没有commit的修改想要撤销掉。而如果commit了的修改想要撤销就要用reset了。
checkout某个文件是让那个文件回到仓库里HEAD的状态。
如果是用惯了svn的同学可能会想着先把那个文件删掉,再从仓库里拉取最新代码就行。在git里是不适用的哦。
回退版本
git reset --hard HEAD^
回退到上个版本。
git reset --hard HEAD~n
回退到前n次提交之前。
git reset --hard commit_id
退到/进到 指定commit的sha码。
推送本地修改到远程仓库
git push
,某些情况下你需要指定远程仓库的名字和分支,如git push origin master
。
拉取远程的最新代码
git pull
配置账户
git config --system --list
git config --global --list
git config --local --list
git config --local user.name "xxx"
git config --local user.email "xxx"
git clean
删除未受控的文件:git clean -f
删除未受控的文件和目录:git clean -fd
查看将要删除哪些文件:git clean -nf
查看将要删除哪些文件和目录:git clean -nfd
公钥管理
ssh-keygen -t rsa -C "yourEmail@xxx.com"
。
然后会让你选择存放路径和输入密码,可以直接按回车。
然后就会生成两个文件,一个id_rsa,一个id_rsa.pub。
拷贝id_rsa.pub里面的内容,粘贴到github或者gitee里。
添加成功后,输入ssh -T git@gitee.com
来测试是否可以正常连接。
rebase配合merge使用
多人协作的话需要分支,分支上开发一个功能完成后需要合并到主干上,但是主干上不想要多余的提交记录。此时,可以使用变基。过程大概是这个样子。
git branch dev
git switch dev
//modify sth
git commit -m 'dev 1'
//modify sth
git commit -m 'dev 2'
git rebase -i startpoint endpoint//不写endpoint的话就是HEAD
//select pick reword fixup and so on
git switch master
git merge dev