关于Git你必须知道的
目錄
- 添加修改
- 儲藏
- 撤銷修改
- 更新與推送
- 查看信息
- 分支
- 標簽
- 合并與重置
- Github
- clone 方式
- 生成 SSH 公鑰
創建一個新的本地倉庫:
$ git init添加修改
添加修改到暫存區:
# 把指定文件添加到暫存區 $ git add xxx# 把當前所有修改添加到暫存區 $ git add .# 把所有修改添加到暫存區 $ git add -A提交的時候warning: LF will be replaced by CRLF in 解決辦法
原因是存在符號轉義問題
windows中的換行符為 CRLF, 而在linux下的換行符為LF,所以在執行add . 時出現提示,解決辦法:
git config --global core.autocrlf false提交修改到本地倉庫:
# 提交本地的所有修改 $ git commit -a# 提交之前已標記的變化 $ git commit# 附加消息提交 $ git commit -m 'commit message'儲藏
有時,我們需要在同一個項目的不同分支上工作。當需要切換分支時,偏偏本地的工作還沒有完成,此時,提交修改顯得不嚴謹,但是不提交代碼又無法切換分支。這時,你可以使用 git stash 將本地的修改內容作為草稿儲藏起來。
推薦:太贊了,SpringBoot+Vue前后端分離完整入門教程!
官方稱之為儲藏,但我個人更喜歡稱之為存草稿。
# 1. 將修改作為當前分支的草稿保存 $ git stash# 2. 查看草稿列表 $ git stash list stash@{0}: WIP on master: 6fae349 :memo: Writing docs.# 3.1 刪除草稿 $ git stash drop stash@{0}# 3.2 讀取草稿 $ git stash apply stash@{0}撤銷修改
撤銷本地修改:
# 移除緩存區的所有文件(i.e. 撤銷上次git add) $ git reset HEAD# 將HEAD重置到上一次提交的版本,并將之后的修改標記為未添加到緩存區的修改 $ git reset <commit># 將HEAD重置到上一次提交的版本,并保留未提交的本地修改 $ git reset --keep <commit># 放棄工作目錄下的所有修改 $ git reset --hard HEAD# 將HEAD重置到指定的版本,并拋棄該版本之后的所有修改 $ git reset --hard <commit-hash># 用遠端分支強制覆蓋本地分支 $ git reset --hard <remote/branch> e.g., upstream/master, origin/my-feature# 放棄某個文件的所有本地修改 $ git checkout HEAD <file>刪除添加.gitignore文件前錯誤提交的文件:
$ git rm -r --cached . $ git add . $ git commit -m "remove xyz file"撤銷遠程修改(創建一個新的提交,并回滾到指定版本):
$ git revert <commit-hash>徹底刪除指定版本:
# 執行下面命令后,commit-hash 提交后的記錄都會被徹底刪除,使用需謹慎 $ git reset --hard <commit-hash> $ git push -f更新與推送
更新:
# 下載遠程端版本,但不合并到HEAD中 $ git fetch <remote># 將遠程端版本合并到本地版本中 $ git pull origin master# 以rebase方式將遠端分支與本地合并 $ git pull --rebase <remote> <branch>推送:
# 將本地版本推送到遠程端 $ git push remote <remote> <branch># 刪除遠程端分支 $ git push <remote> :<branch> (since Git v1.5.0) $ git push <remote> --delete <branch> (since Git v1.7.0)# 發布標簽 $ git push --tags查看信息
顯示工作路徑下已修改的文件:
$ git status顯示與上次提交版本文件的不同:
$ git diff顯示提交歷史:
# 從最新提交開始,顯示所有的提交記錄(顯示hash, 作者信息,提交的標題和時間) $ git log# 顯示某個用戶的所有提交 $ git log --author="username"# 顯示某個文件的所有修改 $ git log -p <file>顯示搜索內容:
# 從當前目錄的所有文件中查找文本內容 $ git grep "Hello"# 在某一版本中搜索文本 $ git grep "Hello" v2.5分支
增刪查分支:
# 列出所有的分支 $ git branch# 列出所有的遠端分支 $ git branch -r# 基于當前分支創建新分支 $ git branch <new-branch># 基于遠程分支創建新的可追溯的分支 $ git branch --track <new-branch> <remote-branch># 刪除本地分支 $ git branch -d <branch># 強制刪除本地分支,將會丟失未合并的修改 $ git branch -D <branch>切換分支:
# 切換分支 $ git checkout <branch># 創建并切換到新分支 $ git checkout -b <branch>標簽
# 給當前版本打標簽 $ git tag <tag-name># 給當前版本打標簽并附加消息 $ git tag -a <tag-name>合并與重置
merge 與 rebase 雖然是 git 常用功能,但是強烈建議不要使用 git 命令來完成這項工作。
因為如果出現代碼沖突,在沒有代碼比對工具的情況下,實在太艱難了。
你可以考慮使用各種 Git GUI 工具。
合并:
# 將分支合并到當前HEAD中 $ git merge <branch>重置:
# 將當前HEAD版本重置到分支中,請勿重置已發布的提交 $ git rebase <branch>Github
Github 作為最著名的代碼開源協作社區,在程序員圈想必無人不知,無人不曉。
這里不贅述 Github 的用法,確實有不會用的新手同學,可以參考官方教程:https://guides.github.com/
clone 方式
Git 支持三種協議:HTTPS / SSH / GIT
而 Github 上支持 HTTPS 和 SSH。
HTTPS 這種方式要求你每次 push 時都要輸入用戶名、密碼,有些繁瑣。
而 SSH 要求你本地生成證書,然后在你的 Github 賬戶中注冊。第一次配置麻煩是麻煩了點,但是以后就免去了每次 push 需要輸入用戶名、密碼的繁瑣。
以下介紹以下,如何生成證書,以及在 Github 中注冊。
生成 SSH 公鑰
如前所述,許多 Git 服務器都使用 SSH 公鑰進行認證。為了向 Git 服務器提供 SSH 公鑰,如果某系統用戶尚未擁有密鑰,必須事先為其生成一份。這個過程在所有操作系統上都是相似的。首先,你需要確認自己是否已經擁有密鑰。默認情況下,用戶的 SSH 密鑰存儲在其 \~/.ssh 目錄下。進入該目錄并列出其中內容,你便可以快速確認自己是否已擁有密鑰:
$ cd ~/.ssh $ ls authorized_keys2 id_dsa known_hosts config id_dsa.pub我們需要尋找一對以 id_dsa 或 id_rsa 命名的文件,其中一個帶有 .pub 擴展名。 .pub 文件是你的公鑰,另一個則是私鑰。如果找不到這樣的文件(或者根本沒有 .ssh 目錄),你可以通過運行 ssh-keygen 程序來創建它們。在 Linux/Mac 系統中,ssh-keygen 隨 SSH 軟件包提供;在 Windows 上,該程序包含于 MSysGit 軟件包中。
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/schacon/.ssh/id_rsa): Created directory '/home/schacon/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/schacon/.ssh/id_rsa. Your public key has been saved in /home/schacon/.ssh/id_rsa.pub. The key fingerprint is: d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local首先 ssh-keygen 會確認密鑰的存儲位置(默認是 .ssh/id_rsa),然后它會要求你輸入兩次密鑰口令。如果你不想在使用密鑰時輸入口令,將其留空即可。
現在,進行了上述操作的用戶需要將各自的公鑰發送給任意一個 Git 服務器管理員(假設服務器正在使用基于公鑰的 SSH 驗證設置)。他們所要做的就是復制各自的 .pub 文件內容,并將其通過郵件發送。公鑰看起來是這樣的:
$ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3 Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx NrRFi9wrf+M7Q== schacon@mylaptop.local在你的 Github 賬戶中,依次點擊 Settings > SSH and GPG keys > New SSH key
然后,將上面生成的公鑰內容粘貼到 Key 編輯框并保存。至此大功告成。
后面,你在克隆你的 Github 項目時使用 SSH 方式即可。
克隆一個已創建的倉庫:
# 通過 SSH $ git clone ssh://user@domain.com/repo.git#通過 HTTP $ git clone http://domain.com/user/repo.git總結
以上是生活随笔為你收集整理的关于Git你必须知道的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天,我有话说!
- 下一篇: 关于Git的一些经验总结