git 常用 使用命令

1、用遠程代碼庫中的版本完全覆蓋本地工作版本

  git reset --hard
  git pull


2、保留本地代碼庫中沒有push的改動,更新代碼,再還原代碼

   git stash
   git pull
   git stash pop


3、撤銷commit但未push的改動

 git log                     #找到要撤銷的id
 git reset --hard id         #撤銷改動,本地代碼恢復到id版本
 git stash pop               #撤銷commit,但不對本地代碼修改撤銷


4、撤銷緩衝區改動

  git reset


5、提交

 git add -A     #提交所有變化
 git add -u     #提交modified和deleted文件,不包括new
 git add .      #提交new和modified文件,不包括deleted文件


6、分支管理

 git branch                 #列出本地所有分支
 git branch </name/>        #創建分支name
 git branch -d </name/>     #刪除分支name
 git checkout </name/>      #切換分支
 git checkout -b </name/>   #創建並切換分支


7、遠程庫與本地庫合併

git remote                            #查看遠程庫信息
 git push origin dev                   #推送指定分支dev
 git checkout -b dev origin/dev        #創建遠程origin的dev分支到本地
 git merge  </name/>                   #合併指定分支name到當前分支
 git branch --set-upstream dev  origin/dev  #建立本地dev分支與遠程分支dev的關聯
 (在pyCharm中也可以直接從右下角的Git-》RemoteBranches選擇對應的遠程分支,點左鍵check out as
 就可以自動創建本地關聯的對應分支)


8、刪除“.pyc”文件

 find /tmp -name "*.pyc"
 xargs rm -rf


9、撤銷已commit但未git push的命令

 git log                 #找到想要撤銷的id
 git reset -hard id      #將代碼恢復到前一commit_id 對應的版本,同時完成commit的撤銷
 git reset id            #完成commit的撤銷,但不對本地代碼修改進行撤銷,可以通過commit再次提交本地代碼的修改
1.放棄本地修改
使用本地版本覆蓋:
使用版本庫覆蓋:
當執行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令時,會用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區以及工作區中的文件。這個命令也是極具危險性的,因爲不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。

使用暫存區覆蓋:
當執行 "git checkout ." 或者 "git checkout -- <file>" 命令時,會用暫存區全部或指定的文件替換工作區的文件。這個操作很危險,會清除工作區中未添加到暫存區的改動。

使用遠程版本覆蓋
git fetch --all  //只是下載代碼到本地,不進行合併操作
git reset --hard origin/dev  //把HEAD指向下載的dev分支版本
git pull  //再次更新本地

2.忽略某文件以及某文件夾
a、從未提交過的文件可以用.gitignore 也就是添加之後從來沒有提交(commit)過的文件,可以使用.gitignore忽略該文件,該文件只能作用於未跟蹤的文件(Untracked Files),也就是那些從來沒有被 git 記錄過的文件, 比如,忽略log/下的日誌文件,可以在.gitignore中寫 log/*
創建.gitignore
修改文件,添加忽略正則
.idea //忽略.idea文件夾及文件夾下文件
  *.iml //忽略以.iml結尾的文件
# 忽略*.o和*.a文件
 *.[oa]
# 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b
**/foo: 忽略/foo, a/foo, a/b/foo等
# 忽略dbg文件和dbg目錄
dbg
# 只忽略dbg目錄,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目錄
dbg
!dbg/
# 只忽略當前目錄下的dbg文件和目錄,子目錄的dbg不在忽略範圍內
/dbg
提交本地版本庫,推送到遠程項目,方便協作,項目管理
添加忽略之後,已經提交到版本庫中的文件是無法忽略的。只能clone到本地,刪除後,再忽略。
刪除track的文件 (已經commit的文件)
git rm -r --cached 文件(從緩存中刪除文件)
在.gitignore文件中添加忽略規則
(1) 在.gitignore文件中添加ignore條目, 如: some/path/some-file.ext
(2) 提交.gitignore文件: git commit -am "添加ignore規則"

b、已經推送(push)過的文件,想從git遠程庫中刪除,並在以後的提交中忽略,但是卻還想在本地保留這個文件, 執行命令 git rm --cached Xml/config.xml, 後面的 Xml/config.xml 是要從遠程庫中刪除的文件的路徑,支持通配符*, 比如,不小心提交到git上的一些log日誌文件,想從遠程庫刪除,可以用這個命令
c、已經推送(push)過的文件,想在以後的提交時忽略此文件,即使本地已經修改過,而且不刪除git遠程庫中相應文件 執行命令 git update-index --assume-unchanged Xml/config.xml 後面的 Xml/config.xml 是要忽略的文件的路徑。如果要忽略一個目錄,打開 git bash,cd到目標目錄下,執行: git update-index --assume-unchanged $(git ls-files | tr '\n' ' ') 比如有一個配置文件記錄數據庫的鏈接信息,每個人的鏈接信息肯定不一樣,但是又要提供一個標準的模板,用來告知如何填寫鏈接信息,那麼就需要在git遠程庫上有一個標準配置文件,然後每個人根據自己的具體情況,修改一份鏈接信息自用,而且不會將該配置文件提交到庫

3.版本回退
git reset 是指將當前head的內容重置,不會留log信息。
git reset HEAD filename  從暫存區中移除文件
git reset --hard HEAD~3  會將最新的3次提交全部重置,就像沒有提交過一樣。
git reset --hard [commit哈希值](38679ed709fd0a3767b79b93d0fba5bb8dd235f8) 回退到 38679ed709fd0a3767b79b93d0fba5bb8dd235f8 版本
根據--soft --mixed --hard,會對working tree和index和HEAD進行重置:
git reset --mixed:此爲默認方式,不帶任何參數的git reset,它回退到某個版本,只保留源碼,回退commit和index信息
git reset --soft:回退到某個版本,只回退了commit的信息,不會恢復到index file一級。如果還要提交,直接commit即可
git reset --hard:徹底回退到某個版本,本地的源碼也會變爲上一個版本的內容
命令 git log --pretty=oneline --abbrev-commit 找到歷史提交的commit id

4.解決衝突
情景一:在當前分支上,直接修改衝突代碼--->add--->commit。
情景二:在本地當前分支上,修改衝突代碼--->add--->commit--->push

5.強制用本地覆蓋遠程
git push origin master --force

6.本地項目添加到遠程
1.在遠程新建倉庫
2.在本地項目運行命令
git init
git remote add origin [email protected]:用戶名/項目名.git
git add 項目名
git commit -am "註釋" 提交項目文件
git push -u origin master 推送到遠程倉庫

如果有衝突則先解決衝突

git fetch + git merge 與 git pull 的區別是前者下載與合併分成了兩步,後者一次做完

當執行 "git reset HEAD" 命令時,暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。刪除已經add但是還沒有提交的文件
當執行 "git rm --cached <file>" 命令時,會直接從暫存區刪除文件,工作區則不做出改變。

7.設置保存用戶名密碼
git config --global user.name "[email protected]"
git config --global user.email "[email protected]"
git config --global credential.helper store

8.將指定文件恢復到某個版本
場景: 對於某個Git控制下的文件進行了修改,但是改的不滿意,想退回到改之前的版本。假定該文件爲 src/main/main.c
解決方法:
第一步: 在命令行中輸入 git log src/main/main.c 得到該文件的commit 歷史。
第二步: 複製需要回退版本的hash,在此假設我們回退到 95d4f787ff2949 ,則複製該序列即可
第三步:checkout 對應版本。格式爲 git checkout <hash> <filename>, 在此即爲命令行中輸入 git checkout 95d4f787ff2949 src/main/main.c
第四步: commit checkout下來的版本。 如: git commit -m "revert to previous version"

9.查看遠程地址命令
git remote -v

10.標籤
命令 git tag <tagname> 用於新建一個標籤,默認爲HEAD,也可以指定一個commit id;
命令 git tag -a <tagname> -m "this is memeo" 可以指定標籤信息;
命令 git tag 可以查看所有標籤。
命令 git tag -d <tagname> 刪除標籤
命令 git push origin :refs/tags/<tagname> 可以刪除一個遠程標籤。
命令git push origin --tags 一次性推送全部尚未推送到遠程的本地標籤
命令git push origin <tagname> 推送某個標籤到遠程




 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章