Git—代碼管理、提交及衝突解決流程的思考

1 代碼管理

  Git很少說,你們都知道這是一個分佈式版本控制系統,對開發者而言,能夠敏捷高效的進行代碼管理及開發,也很是適合多人協做。話很少說,下面就來點乾貨。git

1.1 建立新倉庫

  咱們在工做區(就是本身的電腦裏)建立一個新的文件夾,這個文件夾用來存放遠端同步過來的代碼庫。進入到這個新建的文件夾,執行建立新的倉庫的命令:
$ git init緩存

補充:
  差點忘記介紹一下git維護的「樹」(3棵):ssh

  1. 工做區: 也就是咱們的電腦裏的實際文件所在位置,即爲工做目錄;
  2. 暫存區:Index,暫存的意思就是臨時保存咱們的改動,相似於緩存;
  3. 版本庫:HEAD,這是git的版本庫,指向咱們最後一次提交的結果。

1.2 克隆倉庫(拷貝項目)

$ git clone <repository_address>分佈式

舉例:gerrit倉庫:
git clone "ssh://usera@gerrit.cmss.com:123456xx/Project1/Project1.1"命令行

咱們也可使用git clone <repository_address> <local_dir>命令將倉庫拷貝到指定的local_dir目錄中。版本控制

2 代碼提交流程

2.1 遠程拉取最新倉庫內容

$ git pull日誌

2.2 查看分支

查看本地分支
$ git branch
查看遠端分支
$ git branch -acode

2.3 切換分支

$ git checkout -b local_branch_name origin/remote_branch_name
其中local_branch_name是本地分支的取名;remote_branch_name是遠端分支的名稱;開發

2.4 開發代碼

在這個分支上進行代碼的開發或者修改;rem

2.5 代碼新增

逐個添加
$ git add file_name
其中file_name爲須要提交的代碼路徑名;

一次性添加
咱們也能夠一次性所有提交
$ git add -A

2.6 代碼提交

基於模板提交
$ git commit
會跳轉到以前編輯好的git提交模板,進行模板信息編寫並保存;

基於命令行的提交信息
$ git commit -m "code infomation"
其中"code infomation替換爲本次提交代碼的信息;

2.7 代碼拉取合併

通常在代碼推送前,咱們最好進行一次拉取操做
$ git pull --rebase

這個操做主要是避免,在咱們修改代碼的同時,其餘開發者也在修改代碼並提交合併到了同一個分支,此時遠端倉庫和本地工做目錄的基線不一致。若是有衝突,咱們就手動去解決這些衝突。

2.8 代碼推送

$ git push origin HEAD:refs/for/remote_branch_name" 其中,remote_branch_name`是遠端分支的名稱;

3 其餘經常使用命令

在使用git時,咱們也會使用一些輔助性的命令進行檢查或者進行代碼管理。

3.1 查看狀態

$ git status

3.2 查看日誌

$ git log
或者
$ git reflog

4 代碼衝突

  通常都是在提交代碼前沒有進行git pull拉取最新代碼引發的,固然,當本身的代碼開發完畢後,再次拉取最新代碼也有可能和本地代碼也衝突。這個時候須要咱們去解決這些衝突。
方案一:咱們能夠經過上述的git pull --rebase去解決衝突,而後從新git addgit commit,最後git push

方案二:咱們能夠經過git log查看commit-id,找到最近一次提交,而後在經過git reset --soft commit-id跳轉到倒數第二次提交的位置,進行代碼更改。

相關文章
相關標籤/搜索