一般的に使用されるコマンドやその他の関連業務のGitの概要

- ファイルディレクトリの操作コマンド

1 MKDIR *空のディレクトリを作成し、ディレクトリ名を指し
2 PWD表示現在のディレクトリパス。
3猫* *ビューファイルの内容
4のgitのrm *ファイルを削除します**

--git初期化

1つのgit initは現在のディレクトリgitリポジトリになり、隠し.gitファイルを生成します。
2 gitのリモートローカルリポジトリGitHubのリポジトリにプッシュコンテンツを起点URLを追加します。
リモートライブラリークローンから3のgitのクローンgit@url/test.gitは
4のgit * xがどこへ行くステージング領域にファイルを追加します。
5 gitが「*」ファイル-m -mコメントの後に提出されてコミットします。

  --gitクローン支店

1つのgitのクローンは、最も簡単なコマンドxxx.git 
2 gitのクローンxxx.gitを指定したディレクトリにクローン「ディレクトリを指定」
の代わりに、デフォルトの起源HEAD(マスター)クローンクローン-b branchname xxx.gitの新しいブランチを作成するために、3 gitの

 

--cloneリモートブランチ

  git cloneコマンドは、デフォルトのマスターブランチを作成し、リモートブランチのクローンが指定したい場合、(例:DEV)以下のように、それはすることができます。

  1.チェックgitのブランチ(隠しを含む)すべてのブランチは、すべての枝を表示する-a 

    

1 *マスタ
2リモコン/原点/ HEAD - >原点/マスター
3リモコン/原点/ devの
4リモコン/原点/マスター

  2.  新しいローカル(「DEV」)ブランチと同じ名前で、分岐に切り替え

1つのGitチェックアウト-t起源は/ devこのコマンドは同等です:
2 -b Gitのチェックアウト起源devのは/ dev

  - Viewコマンド

1つのgitのステータスは、倉庫の状況を表示するには
2 Gitの差分を*表示Xファイルは、それらの内容変更    
履歴を表示するには3 gitのログ
(提出かどうか、あなたのすべてのコマンドを記録)、バージョン番号ID 4の履歴を表示REFLOG gitの
5 gitのログを-情報量がはるかに優れたディスプレイリストであることができれば、かなり= ONELINE  

  - バージョンのロールバック

1つのGitは^バック版に頼る-hard HEADをリセットする
あなたは、いくつかのバージョン3の最初にロールバックHEAD〜3のgit -hard RESET使用したい場合は〜--hard HEADをリセット2 gitの
057d --hard RESETに戻って3 gitのを特定のバージョン番号に後退

  

- 変更を元に戻します

 
1つのGitのチェックアウトファイル名は(コミットされていない変更を元に戻す)変更されたファイルを復元:
2 GitはHEAD戻すを変更するために戻すは、最後の送信:
3 Gitは上記IDの変更を上述のコミット特定のバージョンを復元するために戻します

  - 支店の管理

すべて1つのgitブランチローカルブランチ見る
 -aすべてのリモートブランチの眺め2 gitのブランチを
 ブランチ3 Gitのブランチ名を作成するために、
 4のgitブランチ-d devのはdevの枝削除
 5 Gitのプッシュ起源を--delete devのdevのリモートブランチの削除
 6 gitのブランチを- m個のDEVがリネーム開発分岐

 7 gitのチェックアウト-bのDEVのDEV分岐作成およびDEVのブランチに切り替える
 現在のブランチの代わりに8 gitのマージDEVのDEV組み合わせ分岐
 電流ブランチが押さ9 Gitのプッシュ原点ZYF-DEV新疆ZYF-DEVリモートライブラリ(新しい枝にノーリモートリポジトリは、支店の設立となります)
 
* XXワークスペースに変更されたすべてのファイルを撤回する- 10 gitのチェックアウト。
マスタースイッチバックマスターブランチ11 Gitのチェックアウト
12 Gitのプッシュ--set上流原点DEVは変更をコミットし、リモートブランチDEVを作成

  --tag関連の操作

1つのGitのタグは、タグのすべてのリスト
光タグ名を再生する2 Gitのタグ名を
ローカル名タグ削除-d 3 Gitのタグ
プッシュ原点リモートタグ削除--delete 4 Gitのタグ名を
情報表示するために、5表示Gitのタグ名を
6 Gitのプッシュ原産地名は、リモートタグに提出されます

  

- 隠しファイル

1つのgitが復旧サイトの後に働き続けるので、後に隠された、現在の仕事を隠しておく
のリストすべての隠しファイルを表示するには、2のgitのstashリスト
3のgitスタッシュが隠しファイルを回復適用しますが、コンテンツは削除されていない
ファイルを削除4のgitのstashドロップ
5 Gitのスタッシュを一方、ポップは、ファイルを削除してもファイルを復元します

 

- リモートリポジトリ(gitのリモート使用方法)についての情報を見ます 

1つのGitは、リモートリモートレポジトリ情報を表示
リモートデータベースの詳細を表示する-V 2 gitのリモコンを
3 gitのリモート名のURLがリモートリポジトリ追加
4 GitはリモートOLDNAME倉庫リネームNEWNAMEリネーム
RM遠隔5のgitを倉庫を削除します

 

- ローカルブランチにリモートで引っ張ります

方法1:Gitのチェックアウト-bローカルブランチ名X原点/リモートブランチ名X 
2つの二つの方法:gitのフェッチ原点リモートブランチ名X:Xローカルブランチ名

 

--gitプル操作

コードをコピー
コードをコピー
1つのgitのプルアクションコマンドは、ブランチがリモートホストを更新取得することで、その後、指定されたローカルブランチと合わせ、以下のように、基本的な形式です。
 2 $ Gitのプル<リモートホスト名> <リモートブランチ名> <ローカルブランチ名> 
 。3 
 。4は、ローカル分岐マスタと組み合わせ次の分岐元ホストを検索、次のように書かれる必要がある
 5 $ Gitの次プル起源:マスター
 6。
 リモートブランチ7は現在の分岐と組み合わされる場合、結腸の一部を省略してもよいです。
 Gitの次は、Origin $を引っ張る。8 
 。9 
10起源/次の分岐を検索し、上記のコマンドを表しており、その後、現在のブランチにマージ。要するに、これは、最初のgitのフェッチを行うGitのマージを行うことと等価です。
原点Gitは$ 11 FETCH 
12 $のGitが原点/マージ次に
13 
いくつかのケースでは14、Gitは自動的にローカルブランチ及びリモートブランチの間に、関係の追跡(トラッキング)を確立します。例えば、gitのクローン、既定のリモートホスト、追跡の関係、つまり、ローカルのmasterブランチ自動「トラック」起源/マスターブランチのすべての支店で同じ名前のローカルブランチ。
15 Gitはまた、トラックが手動で関係を確立することができます。
--set-16起源マスター/次の上流Gitのブランチ
17
18上記のコマンドは、原点/次の分岐を追跡するためのmasterブランチを指定します。トレース支店やリモートブランチの存在との間に電流が関係する場合は、gitのプルは、リモートブランチ名を省略する。
19 $ gitのプル起源
コードをコピー
コードをコピー

 

--git設定大文字と小文字を区別

デフォルトでは、Windows上でGitは大文字と小文字を区別しませんので、マルチプラットフォームの問題を記述することが可能です。Gitの勝利は、次のコマンドで提供大文字と小文字が区別されます

1つのgit configが偽core.ignorecase  

 

変更するファイルまたはフォルダのアクセス権を無視するように設定--git

1つのgit configが偽core.filemode

 

- 追跡ブランチを作成します。

パラメータなしのgit pushは、デフォルトでは唯一の簡単な方法と呼ばれている現在のブランチをプッシュ。また、マッチングの方法があり、対応するリモートブランチのローカルブランチの全てをプッシュする必要があります。Gitのバージョン2.0より前、マッチング法デフォルトでは、今シンプルにデフォルト設定されています。この設定を変更したい場合は、gitのconfigコマンドを使用することができます。

Gitの設定--global push.default $マッチング
#または
$をgitの設定--global push.default簡単な(好ましくは、この方法で使用されます)
  手動で追跡ブランチを作成するためのgit branchコマンドを使用するときに$ Gitのブランチ--trackマスター起源/マスターは//「--track」パラメータを追加します

 

- スイッチング英語へのgitコマンドプロンプト中国

コードをコピー
// gitのインストールUbuntuは、次のように全体の中国のプロンプトではなく、非常に良い、中国への決定的なスイッチ、およびスイッチング方法が登場かわからない:
// 1:書き込み エコー「エイリアスgitのを= 『LANG =表すen_GBのgitの』」>> 〜/ .bashrcに // 2:力への参入 ソース〜/ .bashrcに
コードをコピー

 

ファイルまたはフォルダのバージョンを削除するために追加されません--git

人跡未踏のファイルは、削除したり、gitのを使用する必要があり、これらのファイルをクリーンアップする:だけ追加したファイルのため、変更または削除バージョンをロールバックすることができますgitのチェックアウトは、新しいファイルまたはフォルダがある、すなわち、有用ではありませんcleanコマンド:

コードをコピー
コードをコピー
ファイル1 //人跡未踏削除
 Gitのクリーン-f 2 
 。3   
 4 @でも、人跡未踏のディレクトリを一緒にも削除されます
 。5 Gitのクリーン-fd 
 。6   
 。7 //でもgitignore untrackファイル/ディレクトリはまた、一般的に削除するために使用され(一緒に削除されます)クラスの.oファイルからコンパイル
 -xfdクリーン8 gitの
 9   
きれいにgitを使用する前にクリーンアップ// 10、ファイルを誤って削除から重要なファイルを防ぐために削除されるで見とるには、-nを追加することを示唆し
11のgitを-nxfdクリーン
12は、Gitのクリーン-nfで
13れるGitのクリーン-NFD
コードをコピー
コードをコピー


第三に、多くの場合、エラー:
1:現在のブランチのためのトラッキング情報でNOあります...
    その後、ローカルブランチとコマンドを使用し、リンクを作成していないリモートブランチの関係:??
    Gitの支店は--set-上流の支店名起源/支店名。

2 :! [拒否] DEV -
> DEV(非早送り)...あなたの現在の枝の先端ので、更新は拒否された    プッシュ最新の投稿リモートでコードために失敗したと、あなたは解決策をプッシュする紛争を提出しようそれはまた、非常に単純ですが、最初のgitで、地元の合併では、その後、ダウン起源は/ devからキャッチの最新の提出に引っ張る紛争解決、およびそれらを押し上げ
    
3:CONFLICT(コンテンツ):.
..で競合をマージ    この時間gitのプルの成功が、紛争に関連した、手動での紛争やブランチ管理を解決するためのソリューションとして、解決する必要があります。提出することを解決した後、その後、プッシュ:
    
4:あなたによって支店で現在このページを評価されていないので、私は任意の使用することはできません
   解決策:gitのチェックアウトマスター

5:あなたの支店がコミット1によって「起源/マスターの背後にある、とFAST-転送することができますが。
   上記のショーは意味、まだサーバに少し何かを提出することができるローカル、他の人への更新に応答がありません。 
   あなたはローカルであるためにこれらの更新プログラムを入手するのgit pullコマンドを使用することができます。

 

6:Gitのプッシュ次のメッセージが表示されることがあります。 

警告:push.defaultが設定されていません。その暗黙の値がに変化している
「シンプル」に「マッチング」からのGit 2.0。このメッセージをスケルチする
と、デフォルトの変更、使用後の現在の動作を維持する:
gitの設定--global push.defaultマッチング
このメッセージをスケルチして、新しい行動を採用するために使用:
  gitの設定--global push.default SIMPL

  解決策:「マッチング」パラメータを使用すると、Gitのプッシュを実行しますが、ブランチを指定しない場合、それはリモートリポジトリ対応するマッチを分岐するためにすべてのあなたのローカルブランチをプッシュしますが、デフォルトの動作のGitの1.xのです。Gitの2.xのデフォルトでは、Gitのプッシュを実行し、シンプルでブランチが指定されていない場合、唯一の現在のブランチは、あなたが得たプルgitのをプッシュするために使用したコードであることを意味します。 
プロンプトが表示されたら、Gitのプッシュを変更します。

1つのGitの設定--global push.defaultマッチング

ライン上で再びGitのプッシュを実行します。

 

7:リモート「起源」から引くように求めたが、指定されていませんでした:ブランチを。これがデフォルト設定され、リモートではありませんので、あなたの現在のブランチのために、コマンドラインでブランチを指定する必要があります。

ソリューション:検索:.git/config  修改如下

1 [分岐"マスター"] 
2リモート=原点
3マージ=参考文献/ヘッド/マスター

 

8:ERROR:許可がUSER1 / test.git致命的なuser2に拒否します:リモートエンドが突然ハングアップ

 説明のための下、紛争アカウント

 

9:SSHを追加すると、動作しませんか?

   sshはルートユーザを追加する権限を追加する必要があり、他の権限は動作しません、覚えています!


第四に、親指のルール:
1:gitの違いが復帰し、gitのリセット 
スタートを両方とも同じように感じますが、クライアントとコマンドライン・ウィンドウ操作の後にそれは多くの異なったが、例を見て:私は3つの1,2,3 IDを提出します以下に示すように番号が(15d5f70、a167eb1,8fbfe3f)であります

そして、バージョンのロールバックにgitを実行するよう-hard A167をリセットします。

说明执行git reset –hard ** 版本回退是撤销某次提交,但是此次之后的修改都会被退回到暂存区,因为上面显示有提交(by 1 commit)
同理执行 git revert –hard a167
git revert是用一次新的commit来回滚之前的commit
  在回滚操作上看,效果一样。但是在日后继续merge以前的老版本时有区别。revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。 
得到结论:git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,
只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

  这样在版本回退的时候就比较的好,比如本地dev分支,远程master分支,某一次的上线发现线上有重大的bug,然后你reset本地代码到前一个版本,在你git push 的时候git会报一个错误:“说你的本地分支版本低于远程master分支的版本,让你先去pull 下来代码,再提交”,这就不行了,你pull下来的代码还是最新版有bug的代码,不进行pull代码,master分支又不让你提交。解决这个问题还得使用 revert 来进行 “回退”操作,为什么加引号呢,是因为这种回退是向前提交一次中和了上次的修改,这就比较好了,这样你revert之后相当于指针向前移动一次,本地版本dev高于远程master版本,这时你就可以git push 本地代码到远程了。也就是说,git reset 对未提交到(git push)远程的修改做回滚比较好,如果要回滚本地,同时想远程也回滚,就要用到revert

五、常用修改:
1:避免每次提交都输入用户名和密码
    原因是使用了https方式 puh 在termail里边 输入  git remote -v 可以看到形如一下的返回结果
    origin https://github.com/git/librarysystem.git(fetch)
    origin https://github.com/git/librarysystem.git(push)
    下面把它换成ssh方式的。

1. git remote rm origin
2. git remote add origin [email protected]:yu/demo.git
3. git push origin 

2:添加忽略文件 .gitignore 
    .gitignore配置文件用于配置不需要加入版本管理的文件。
    配置语法: "/"  开头表示目录;  "*"  通配多个字符;  "?"  通配单个字符   "[]" 包含单个字符的匹配列表;  "!"  表示不忽略(跟踪)匹配到的文件或目录;
    说明:git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
    示例:(1) foder/*     忽略目录foder下的全部内容,不管是根目录下的 /foder/ 目录,还是某个子目录 /list/foder/ 目录,都会被忽略。
         (2) /foder/*   说明:忽略根目录下的 /foder/ 目录的全部内容;
         (3) /*!.gitignore
                          !/fw/bin/
                          !/fw/sf/
                          说明:忽略全部内容,但是不忽略 .gitignore文件,根目录下的 /fw/bin/ 和 /fw/sf/ 
    注意问题: .gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把要忽略的文件纳入了版本库,就不起作用了。

3:如何在同一台电脑上使用两个git账户

  问题描述:作为程序员有时候是有多个的项目,而且每个项目git的用户名,邮箱等,都不一样。就我来说,我在github上有一个账号,自己开发一些东西,同时我参与的也有项目需要连接别人的github账号,在我电脑上只有一个git客户端,本地一个身份用户,开始的时候我自己开发是用ssh方式,参与的项目的是用https连接,但是https每次都需要输入密码,非常不方便,所以想转成ssh连接,利用命令:
>$ git remote rm origin
>$ git remote add origin [email protected]:yu/demo.git 
>$ git push origin       
转换成功,不幸的是push的时候出错了:ERROR: Permission to user1 denied to
这种情况的解决方式是方法,使用本地托管多个个ssh的密钥,不同的账号是用不同的密匙。
第一步:生成SSH Key

执行命令,如下图:

具体说明:

コードをコピー
コードをコピー
1 $ ssh-keygen -t rsa -C "[email protected]"
2   Creates a new ssh key using the provided email Generating public/private rsa key pair.
3   #输入将要保存的路径,我的默认为当前路径(/c/Users/zhaoyafei/.ssh/id_rsa),但是不能使用默认文件id_rsa,要添加新账户就要生起一个成新的好记的名字,例如id_rsa_work
4   Enter file in which to save the key (/c/Users/zhaoyafei/.ssh/id_rsa):
5   #输入回车后提示输入一个类似于密码的号,直接回车就行
6   Enter passphrase (empty for no passphrase):
7   Enter same passphrase again:
コードをコピー
コードをコピー

第二步:识别新的私钥
    默认SSH只会读取id_rsa,所以为了让SSH识别新的私钥,需要将其添加到SSH agent  

1 ssh-add ~/.ssh/id_rsa_work
2  //该命令如果报错:Could not open a connection to your authentication agent.可执行 ssh-agent bash 命令后再执行ssh-add -l 看是否成功。

执行命令,如下图:

第三步:修改config文件
    该文件用于配置私钥对应的服务器。内容如下:

コードをコピー
コードをコピー
 1 # Default github (默认的)
 2       Host github.com
 3       HostName github.com
 4       User git
 5       IdentityFile ~/.ssh/id_rsa
 6 
 7 # second user([email protected])
 8       Host github_work
 9       HostName github.com
10       User git
11       IdentityFile ~/.ssh/id_rsa_work
コードをコピー
コードをコピー

       这样配置,也就是使用hostname为github.com会根据用户名的不同,去使用不用的private key。github上,也可以添加对应的公钥。其实这个配置是关于ssh的与git无关,只是git使用的方式是ssh的方式。Host可随意,方便自己记忆,后续在添加remote是还需要用到。


第四步:将SSH key输入到GitHub网站中    
      将生成的id_rsa_work.pub输入到GitHub网站中就可以了,输入完成后单击Add key后,会看到git-tutorial已经被添加进去了。 配置完成后,在连接非默认帐号的github仓库时,远程库的地址要对应地做一些修改,比如现在添加abc帐号下的一个仓库test,则需要这样添加:git remote add test git@github-work:abc/test.git #并非原来的[email protected]:abc/test.git 这样每次连接都会使用id_rsa_abc与服务器进行连接。


  注意:github根据配置文件的user.email来获取github帐号显示author信息,所以对于多帐号用户一定要记得将user.email改为相应的email([email protected])。我遇到的问题是本地单一用户,链接不同的github账号,所以用户配置可以采用全局配置。如果不同本地用户(不同的身份标识,即需要本地使用不同的用户名),那么git就不要使用有–global的配置,可以按照下面的方法:

コードをコピー
1 1)设置局部的user.name和user.email
2     git config user.name "xxxxxx"
3     git config user.email "[email protected]"
4 2)设置全局的user.name和user.email
5     git config --global user.name "xxxxxx"
6     git config –-global user.email ""
コードをコピー


六、题外话(相关概念)

Git - 版本控制工具
  Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 最近就迁移到 Git 上来了,很多 Freedesktop 的项目也迁移到了 Git 上。

Githubの- Gitの倉庫を作成するために、ユーザ空間を提供するサイト、ドキュメントや、ユーザーコードなど、いくつかのデータ保存
  、オープンソースのコードベースおよびバージョン管理システムとしては、githubのは、現在以上1.4億開発者のユーザーがいます。クラウドへのより多くのアプリケーションとして、Githubのは、ソフトウェアの開発を管理し、既存のコードを見つけるための好ましい方法となっています。上述したように、分散型バージョン管理システムとして、Gitの唯一の主なライブラリが存在しない、ライブラリーの各コピーは、独立して使用することができ、2つのライブラリー間の任意の不一致があってもよいです合併。GitHubのは、gitリポジトリをホストし、Webインターフェイスを提供しますが、SourceForgeのか、別のGoogleのコードのような他のサービスは、GitHubの独自のセールスポイントは、別のプロジェクトから分岐容易です。コードを貢献するプロジェクトは非常にシンプルであるために:まず、「フォーク」ボタンのプロジェクトサイトをクリックして、コードを変更組み込みの「要求を引っ張る」機構を介してプロジェクトへの最終的な責任を負い、検出され、あなたのフォークのコードベースに追加マージを提案人々 。GitHubには、すでに選手たちのMySpaceのコードと呼ばれています。

GitLab - Gitリポジトリベースのプロジェクト管理ソフトウェア
GitLabは、在庫管理のためのオープンソースプロジェクトです。コード管理ツールとしてのGitを使用して、Webサービスに基づいて構築。3はgitのに基づいており、Gitはデリバティブと言うことができます。

おすすめ

転載: www.cnblogs.com/flzs/p/11302697.html