1. Basic info
Git用于文件的版本控制及协作开发。编辑文件后,使用git add filename
把更新添加至暂存区,使用git commit -m "messages"
提交暂存区的修改到本地git数据库。如果要同步至远程服务器,需要使用git push
命令进行同步。
2. basic commands
git add
,提交修改到暂存区git commit
,提交暂存区的修改,参数–amend是撤销上次的commit并重新提交。git push origin master
,将commit的修改同步至远程的master分支git fetch origin master:temp
,新建temp分支,并将远程的master同步至temp分支git merge temp
,将temp分支合并到当前分支git pull origin dev
,等同于git fetch
+git merge
git branch new_name
,创建新的branch但并不自动切换,git branch -d old_branch
,删除不用的branch。git checkout branch_name
,切换到某分支去,切换分支前需要使当前分支干净,可以保存进度(stashing)或者修补提交(amending commit)。分支切换会改变目录中的文件,使得文件对应于当前分支的结构。git checkout -b branch_name
,新建branch并自动切换过去git log -p
,查看历次commit的信息记录。git rm file.name
,git mv old_name new_name
,表示在add加入暂存区后,要删除某文件或重命名。
3. examples
a.新建git仓库
github上新建repo,本地git clone
后,把已有的文件复制进去,并提交更新,同步至远程服务器,
b. 编辑并同步
1 | git add file_name |
c. 创建分支并切换合并
场景描述:master分支为安全稳定的代码,dev为正在开发的比较稳定的代码,test是测试状态的代码。假如正在test分支上工作,突然接到任务需要解决dev分支上的问题。那么流程是切换到dev分支,新建hotfix分支,编辑并测试好解决方案,切换回dev分支,合并分支并删除hotfix分支,然后切换到test分支继续工作,流程如下。
1 | git checkout dev #切换至dev分支 |
d. 合并远程到本地
在本地开发时,如果远程仓库内容有更新,需要合并到本地,假如要从远程的dev branch合并到本地的dev branch,流程如下:
1 | git fetch origin dev:temp |
如果出现合并冲突,即不同的仓库对同一处进行了不同的修改,那么需要手动合并冲突。使用git status
查看什么文件出现冲突,然后打开文件进行合并,在=====分隔符的上下选择一处进行合并,然后重新git add;git commit
,即可。
e. 撤销更改
情景描述:程序写了一半发现改错了,需要回退到之前的一个版本。操作流程如下:
采用命令git reset --hard commit_id
可以回退到相应ID的版本,采用命令git reflog
查到未来的某一个ID后,重新采用git reset --hard commit_id
就可以撤销回退,变为回退之前的版本。
4. others
分支的命名:master用于稳定安全的代码,dev表示正在开发的分支,next表示后续开发及测试,这些都是长期分支.
设置换行符为unix/windows,推荐如下: 1
2# 提交时转换为LF,检出时不转换
git config --global core.autocrlf input
若文件已经是crlf格式,git windows自带了doc2unix程序,直接执行find . -type f -exec dos2unix {} +
即可。