Git简介
集中式vs分布式
svn属于集中式管理,git属于分布式管理。
安装Git
MacOS 安装Xcode后默认安装Git。
创建版本库
git init
git add
$ cd ~/Desktop/
$ mkdir GitResponse
$ cd GitResponse/
$ ls -a
输出: . ..
$ git init
$ ls -a
输出 . .. .git
此时可以看到文件夹中有.git
的文件,说明git仓库构建成功。Git只能跟踪文本文件的改动,比如.txt
文件,网页,程序代码等。
$ touch readme.txt
新建一个文件readme.txt
使用$ git add readme.txt
将文件加入仓库。执行完毕以后如果没有任何提示,则表明添加成功!UNIX思想没有消息就是好消息
git commit -m ""
$ git commit -m "新建readme.txt文件"
输出: [master (root-commit) f242d2d] 新建readme.txt文件
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
git status
我们尝试修改readme.txt
后 使用git status
命令
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
说明修改的文件未提交。 readme.txt
文件未提交。
git diff
git diff
命令用来查看文件修改的地方
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 25fb339..344dba9 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1 +1,2 @@
这是Git仓库。
+开始学习Git。
\ No newline at end of file
其中 +开始学习Git
就是修改的地方。
$ git add readme.txt
$ git commit -m "readme.txt 新增一句话:开始使用Git"
[master 5db8876] readme.txt 新增一句话:开始使用Git
1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory clean
版本回退
git log
查看提交日志
git log --pretty=oneline
git reset --hard 版本号
HEAD^
上个版本
HEAD^^
上上个版本
HEAD~100
git reset --hard HEAD~1
git reflog
查看命令行记录
删除文件
git rm <file>
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
远程仓库
origin
Git默认是远程仓库
分支管理
创建与合并分支
Git 鼓励大量使用分支
git branch
查看分支
git branch <name>
创建分支
git checkout <name>
切换分支
git checkout -b <name>
创建+切换分支
git merge <name>
合并某分支到当前分支
git branch -d <name>
删除分支
解决冲突
同时在两个分支中修改统一文件的位置后。合并代码便会发生冲突。
$ git merge dev
error: merge is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
此时提示合并有冲突.
git merge --no-ff -m "merge with no-ff" <branch name>
合并分支时候建议使用。可以查看其他分支的提交信息。
Bug分支
git stash
工作现场保存。
git stash apply
回复工作现场 但是不会删除stash内容
git stash drop
删除保存stash
git stash pop
恢复并删除
多人协作
git remote -v
查看详细的远程仓库信息
git push origin <branchName>
所有本地提交推送到远程仓库
git pull
从远程仓库拉去最新代码
git checkout -b <branchName> origin/<branchName>
本地创建和远程分支对应的分支
git branch --set-upstream-to <branchName> origin/<branchName>
建立本地分支和远程分支的关联