Git関連のF&Q
コード提出プロセス
- ローカルで鍵ペアを作成し、公開鍵をHuang Haizhenに送信すると、gitプロジェクトは公開鍵を展開します
$ ssh-keygen -C "邮箱"
... # 一路Enter
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfvlLm9Hb4nOJwrW/btXDGNvSWqolr/hxPoAsW3gzxr+fpHFS5/jGAxevjpWqrgd++nQFRVnZnzTDCEdg+kfjTUmx5zqxPFCgMmv3Ci5HuV4MvAjdiReMUNDrLikAZEhuy4H7zW4m+uaOFfrWfwAGnbJNnrverMkjoTL/wkCBvmqimAb8C+67wHV5aHGlrZajiW7zDh8G2sr8NtSifPMz7T/1XV6cYn6w1PIsDzt9Luq4mgmgPqy+U+lgWYRgrUHGt8szYoe1XcJG6NQh3kz3O1RBBcDa2ZR0i5CGVWoZQZQr2J0O22veQAmJmRjGmOcPQJ6QDyT2+Iq+LOohTw8Ov [email protected]
- コードをローカルウェアハウスに複製します
$ git clone -b dev ssh克隆地址
# -b dev省略则拉取默认分支,一般为master,这里使用dev举例
# 克隆仓库分为https与ssh,注意这里为ssh地址,否则部署了公钥任然需要输出账号密码
- コードを変更して送信します(注:変更したファイルがパブリックファイルの場合は、ファイルを最小単位としてマージリクエストを送信します。競合の可能性を高めるために、複数のパブリックファイルを同時に変更することは禁止されています)。
$ git pull origin dev # 注意:拉取仓库最新代码,此步骤不可缺失
$ git branch tester # 创建新分支
$ git checkout tester # 切换新分支
$ git add .
$ git commit -m "修改事件"
# 修改事件格式:日期+事件类型(新增add/更新update)+文件
# 例如修改了Round_1.sh/Round_2.sh文件,git commit -m "20210222_update_Round_1.sh/Round_2.sh"
$ git push origin tester
- コードを正常に送信したら、gitプロジェクトにログインしてマージリクエストを送信します:tester-> dev、管理者にコードを確認してリクエストをマージするように通知します。注:コードにエラーがあり、違反は次のとおりです。記録しました。確認してください!
- 現在のブランチをdevに戻し、一時ブランチを削除し、コードが正常にマージされたら、最新のコードをdevに再度プルします
$ git checkout dev
$ git branch -d test
$ git pull origin dev
支店管理
ブランチを表示
次のコマンドを使用します:git branch
- ローカルブランチを表示
>git branch
* master
- ローカルブランチとリモートブランチを表示する
>git branch -a
* master
remotest/origin/HEAD -> origin/master
remotest/origin/dev
remotest/origin/master
remotest/origin/test
# 使用命令git branch -a,远程仓库已经删除的分支在本地依然可以看到
# 使用命令 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息
>git remote show origin
* 远程 origin
获取地址:...
推送地址:...
HEAD 分支:master
远程分支:
dev 已跟踪
master 已跟踪
refs/remotes/origin/test 过时(使用 'git remote prune' 来移除)
为 'git pull' 配置的本地分支:
dev 与远程 dev 合并
为 'git push' 配置的本地引用:
dev 推送至 dev (最新)
新しいブランチ
次のコマンドを使用します:git branch 分支名称
- ブランチを表示
>git branch
* master
- ブランチを作成する
>git branch hhz
- 作成後にもう一度確認すると、新しいブランチが表示されます。マスターブランチの前にアスタリスクがあります。これは、この時点ではまだマスターブランチにあることを意味します。
>git branch
* master
hhz
スイッチブランチ
次のコマンドを使用します:git checkout 分支名称
- ブランチを作成します。デフォルトはマスターで、新しいブランチhhzに切り替えます
>git checkout hhz
A .idea/vcs.xml
Switched to branch 'hhz'
# 如果当前分支有修改未合并,不允许切换分支,可提交后再切换
- 正常に切り替え、現在のすべてのブランチを表示
>git branch
master
* hhz
- また、現在のブランチステータスを表示するために使用することもできます
git status
>git status
On branch hhz
- ブランチの作成とブランチの切り替えを同時に行う
>git checkout -b hhz2
A .idea/vcs.xml
Switched to a new branch 'hhz2'
- 同等:最初にブランチを作成し、次にブランチを切り替える
git branch hhz2
git checkout hhz2
ローカルブランチを削除する
ローカルブランチを削除し、git branch —delete 分支名称
-
-削除の省略形は-dです。代わりにgitbranch-dブランチ名を使用できます。
- 注:-deleteを使用してブランチを削除する場合、ブランチはそのアップストリームブランチと完全にマージする必要があります。アップストリームブランチがない場合は、HEADと完全にマージする必要があります。
-
-Dは--delete--forceの省略形であるため、マージステータスを確認せずにブランチを削除できます。
- --Forceは-fと省略され、関数は現在のブランチを開始点にリセットすることです.-- forceが使用されていない場合、gitブランチは既存のブランチを変更できません。
マージステータスを確認せずにブランチを削除し、使用しますgit branch -D 分支名称
。これはgit branch --delete --force 分支名称
省略形です。
**注:**現在のブランチを直接削除することはできません。別のブランチに切り替える必要があります
>git branch
master
hhz
* hhz2
>git branch -D hhz2
error: Cannot delete branch 'hhz2' checked out at 'D:/ftp/sat'
>git checkout master
A .idea/vcs.xml
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
>git branch -D hhz2
Deleted branch hhz2 (was c613c75).
>git branch
* master
hhz
リモートブランチを削除する
ローカルコマンドラインからリモートブランチを削除するには、次を使用しますgit push origin -—delete 分支名称
>git push origin --delete hhz
- [deleted] hhz
# 若未进行关联无法通过本地的命令行删除远程分支,需建立本地分支并关联:git push origin 本地分支:远程分支 ,若本地、远程分支名一致,则可省略`:远程分支`
ファイル管理
ファイルを復元する
最新バージョンを復元する
- ローカル変更は送信されません
$ git checkout -- other.sh # other.sht为文件名
- ローカル変更がステージング領域に送信されました(つまり、編集後、gitaddはありますが、gitaddはありませんがgit commit -mはありません…)
$ git reset HEAD # 回退到当前版本
$ git checkout -- other.sh # other.sht为文件名
- ローカル変更が倉庫エリアに送信されました(つまり、編集後、gitaddとgitaddおよびgit commit -m…)
$ git reset HEAD^ # 回退到上一个版本
$ git checkout -- other.sh # other.sht为文件名
任意のバージョンに戻す
$ git log --oneline
fbcfafd (HEAD -> dev) ly-5 # HEAD
02d906a ly-4 # HEAD^
08493f3 Merge branch 'dev' of https://e.coding.net/mars-z/sat/SAT into dev # HEAD^^
c11ed08 ly-3 # HEAD~4
dc07dfe ly-2
# 第一列为版本号
git reset 版本号
git checkout -- other.sh # other.sht为文件名