git的學習筆記(二):git遠程操做

git的學習筆記(一):git本地操做html

1.建立ssh key

ssh-keygen -t rsa -C "your_email@example.com"

執行命令後會在用戶的家目錄生成.ssh的隱藏文件夾,文件夾裏有公鑰id_rsa.pub和私鑰id_rsagit

2.登陸github網站,在用戶的settting頁面,添加ssh key,把剛纔生成的私鑰內容粘貼到key文本中.

在gitlab或者gitee網站添加密鑰的方式與github添加密鑰的方式相同github

3.遠程倉庫的管理

git remote add github <remote URL>                              使用https方式將本地倉庫關聯到遠程倉庫(遠程倉庫名默認爲origin)
git remote add github git@github.com:用戶名/repo_name.git       使用git方式將本地倉庫關聯到遠程倉庫
git remote remove github                                        刪除關聯到本地的遠程倉庫,origin是遠程庫的名字
git branch --set-upstream-to=origin/smart smart                 將分支smart設置爲跟蹤來自origin的遠程分支smart
git push                                                        把本地的全部提交推送到默認的遠程的倉庫
git push github -all
git pull github master                                          將遠程origin代碼拉到本地master分支
git push github master                                          將本地master分支代碼推送到遠端倉庫
git clone <HTTP URLs/remote URL>                                複製遠程項目到本地

4.本地文件與遠程倉庫文件不一樣,不相關時的合併

先切換到須要合併的分支,例如:本地master分支web

git checkout master

合併本地分支和遠程分支shell

# 把本地分支和遠程倉庫的master這兩個不相關,獨立的分支合併
git merge --allow-unrelated-histories github/master

在彈出的窗口中修改內容並退出,即爲commit的內容瀏覽器

5.不一樣人修改了不一樣文件處理方式

不一樣的人修改了同一個項目的不一樣文件,且都已經提交到過程倉庫時ssh

首先用戶A把遠程倉庫的分支拉取到本地倉庫ide

git fetch github
git branch -av      # 查看本地倉庫和遠程倉庫的全部分支信息

在這個時間段內,另外一個用戶B又在他的分支作修改並提交到遠程倉庫後,用戶A使用 git push github 命令同步本地修改到遠程倉庫會提示異常gitlab

用戶A的解決方法:學習

git fetch github                 # 拉取遠程倉庫的分支信息
git merge github/用戶B的分支      # 把用戶B的分支與本地分支進行合併
git push github                  # 推送到遠程倉庫

6.不一樣人修改了同一個文件的不一樣區域處理方式

用戶A修改某個文件,提交併同步到遠程倉庫

用戶B也修改這個文件,而後commit,在同步到遠程倉庫時會報錯

用戶B解決方法:

git fetch
git merge origin/用戶A的遠程分支        # 用戶A修改後提交到哪一個分支,就合併哪一個分支
git push                               # 用戶B同步分支到遠程倉庫的指定分支

7.不一樣人修改了同一個文件的同一區域處理方式

用戶A修改某個文件的某一行,提交併同步到遠程倉庫

用戶B也修改這個文件的同一行,而後commit,在同步到遠程倉庫時會報錯

用戶B的解決方法:

git pull                # 把遠程倉庫的用戶A的修改拉取到本地併合並,會提示 conflict 
修改衝突文件,解決衝突
git commit -m "commit message"      # 提交修改
git push github                     # 同步到遠程倉庫

8.多人協做,同時變動了文件名和文件內容時處理方式

用戶A修改文件名,提交併同步到遠程倉庫

用戶B也修改這個文件的內容,而後commit,在同步到遠程倉庫時會報錯

用戶B的解決方法:

git pull                # 把遠程倉庫的用戶A的修改拉取到本地併合並,會提示修改合併後的提交信息
git push github                     # 同步到遠程倉庫

git會自動把用戶B的文件名修改爲用戶A修改後的文件名

9.多人協做,把同一文件修改爲兩個不一樣的文件名時的處理方式

用戶A修改文件名,提交併同步到遠程倉庫

用戶B也修改這個文件的文件名,而後commit,在同步到遠程倉庫時會報錯

用戶B的解決方法:

git pull                # 把遠程倉庫的用戶A的修改拉取到本地併合並,並同時顯示兩個內容相同但文件名不一樣的文件
git diff file1 file2
git status 
git rm file             # 這裏的file爲沒有被修改以前的文件名
git add file1           # 把 file1 添加到暫存區
git rm file2            # 刪除 file1
git commit -m "commit message"
git push

10.禁止向集成分支執行 push

多人協做開發時,禁止使用的命令,會形成之前提交的信息丟失

git push -f             # 強制 push

11.同一臺電腦添加多個git密鑰

參考gitee網站:Git配置多個SSH-Key

11.1 生成多個網站的公鑰和私鑰

ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/gitee_id_rsa
ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa
ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/gitlab_id_rsa

11.2 在~/.ssh 目錄下新建一個config文件

# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa

11.3 用ssh命令分別測試

Administrator@DESKTOP-B5TMUVT MINGW64 ~/.ssh
$ ssh -T git@gitee.com
Warning: Permanently added the ECDSA host key for IP address '120.55.226.24' tothe list of known hosts.
Hi SING890925! You've successfully authenticated, but GITEE.COM does not provide shell access.

Administrator@DESKTOP-B5TMUVT MINGW64 ~/.ssh
$ ssh -T git@github.com
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,13.229.188.59' (RSA) to the list of known hosts.
Hi renpingsheng! You've successfully authenticated, but GitHub does not provideshell access.

Administrator@DESKTOP-B5TMUVT MINGW64 ~/.ssh
$ ssh -T git@gitlab.com
The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.com,35.231.145.151' (ECDSA) to the list of known hosts.
Welcome to GitLab, @renpingsheng!

以下圖所示

12.打開瀏覽器查看git幫助文檔

git help --web log      # 打開瀏覽器查看git log幫助文檔
相關文章
相關標籤/搜索