1、设置用户名,邮箱
git config --global user.name "name"
git config --global user.email "xxxx@xx.com"
2、创建目录,并把该目录变成可以管理的仓库
cd D:
cd xxuxe
mkdir learngit
git init
3、 把工作区的readme.txt添加进仓库,或者将readme.txt的修改添加进暂存区(stage)
git add readme.txt
4、将暂存区的修改提交到当前分支
git commit -m "提交修改描述"
5、查看仓库当前状态
git status
结果可能是
有修改被加入到暂存区,但还未提交
可能是修改已经被提交,暂存区是干净的
可能文件修改了还未添加到暂存区
6、查看上次修改,查看上次提交和本地文件不同
git diff
假如我添加了两行,结果为
7、显示从最近到最远的提交日志
git log
8、回退到上一个提交版本,回退到某个版本
git reset --hard HEAD^
git reset --hard 某次修改的版本号(可写前半部分)
其中HEAD指的是指向当前版本的指针
9、记录每一次命令,包括关闭git前的命令
git reflog
10、在工作区的修改全部撤销
git checkout -- readme.txt
这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
(1)假如要撤销工作区的修改,可以用git checkout -- readme.txt
(2)撤销暂存区的修改,可以用git reset HEAD readme.txt
然后用git checkout -- readme.txt
撤销工作区的修改
(3)撤销提交了的修改,可以用git reset HEAD readme.txt
实现版本回退,前提是没有推送到远程
11、删除文件
rm 'test.txt'
git commit -m "remove test.txt"
删错了,回退
git checkout -- test.txt
12、将本地仓库关联到远程仓库(github)上,并将本地仓库某分支push到远程 仓库
git remote add origin https://github.com/xxx/learngit.git
git push origin master(分支名)
13、将远程仓库克隆到本地
git clone https://github.com/xxx/xxx.git
14、有关分支
- 创建分支并切换
git checkout -b < branch name>
或者
git branch < branch name>
git checkout < branch name>
- 查看当前分支
git branch
- 完成分支的开发后,合并某分支到当前分支
git merge < branch name>
- 删除分支
git branch -d <name>
一般开发步骤是创建分支,然后开发完成后提交,解决冲突,然后重新提交。
- 强行删除为合并的分支
git branch -D <name>
假设在dev分支开发新功能,突然要求马上修复master分支的bug,这时候dev是不能提交,需要把dev开发现场保存起来,然后切换到master上,创建新分支解决bug,然后在dev上恢复现场继续开发,则
- 保存现场
git stash
用git status查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创建分支来修复bug。
- 恢复现场
git stash apply
恢复后,stash内容并不删除,你需要用git stash drop
来删除;
git stash pop
恢复的同时把stash内容也删了
- 查看保存的工作现场
git stash list
结果为
stash@{0}: WIP on dev: 6224937 add merge
可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:git stash apply stash@{0}
15、推送和抓取
- 查看远程库信息
git remote -v
- 推送分支
git push origin <branch name>
- 在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
- 建立本地分支和远程分支的关联
git branch --set-upstream branch-name origin/branch-name
- 从远程抓取分支到本地关联的分支
git pull
16、多人协作流程
(1)推送自己的修改
git push origin branch-name
如果推送失败,则因为远程分支比你的本地更新。
(2)抓取远程分支
git pull
(3)如果合并有冲突,则解决冲突,并在本地提交;
(4)解决掉冲突后,重新推送
git push origin branch-name
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
。
参考网址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000