git pull會覆蓋本地代碼嗎 把公司代碼上傳到了git上,被leader發(fā)現(xiàn)了怎么辦?
把公司代碼上傳到了git上,被leader發(fā)現(xiàn)了怎么辦?這種問題可大可小,往小了說吧,這個只是一個小事,一點點代碼而已,只要刪掉以后,就沒有什么問題了。往大了說,這個就是信息安全的事件了,可以說是泄露
把公司代碼上傳到了git上,被leader發(fā)現(xiàn)了怎么辦?
這種問題可大可小,往小了說吧,這個只是一個小事,一點點代碼而已,只要刪掉以后,就沒有什么問題了。
往大了說,這個就是信息安全的事件了,可以說是泄露了公司的機密。
可能我們很多人還沒有養(yǎng)成這種信息安全的意識。
但是,由于現(xiàn)在社會上信息安全的事件頻繁的發(fā)生,就連Facebook都出現(xiàn)了用戶資料泄露的情況,所以,作為一個程序員,就更應該在自己的心里繃一根弦了。
說一個真實的故事吧,也是就在我身邊發(fā)生的事情。
事情的起因其實是一個很小的事件。
當時,我們公司的框架是自動生成代碼注釋的,代碼注釋里面會包含項目的名稱和編輯代碼的人名(根據(jù)創(chuàng)建文件的人的域賬號生成的)。
然后,某一個程序員寫了一個小的公共業(yè)務組件,里面用到了一些有意思的技術(shù)。他將這些內(nèi)容放到了自己的博客里面,用于技術(shù)的交流。
因為當時我是在外企,我們的項目也是給涉密的國外政府門或者銀行來做的。
這個程序員在復制代碼的時候呢,很不信的將項目的名稱注釋一起貼到了博客里面,我們的客戶在Google的時候,就看到了這篇博客。
然后雷霆之火就出現(xiàn)了
客戶認為這個是非常嚴重的問題了,我項目的代碼被公然的放到了互聯(lián)網(wǎng)上,這個還是被我發(fā)現(xiàn)了的,那是不是還有很多沒有被我發(fā)現(xiàn)的內(nèi)容?
客戶則認為這個完全是管理的不嚴謹和員工意識不足的問題,而且是很大的安全隱患。解除合同賠錢都是小事了,還要起訴我們企業(yè)。
我們是一個500強的外企,這個事情要是鬧大了,那股票肯定一片綠?。?/p>
從中國地區(qū)的CEO,到集團總部的CEO,每個人都還是給客戶做工作,賠禮道歉等等。
然后,外國也和中國一樣,無證電工引起了大樓著火。
所以最后這個程序員就成為了犧牲品,程序員這次泄露代碼的行為被定義為個人行為,客戶直接起訴了這個程序員。
最終的結(jié)果我就不得而知了,不過這個程序員的履歷上,肯定有一個一輩子無法磨滅的黑點了。
所以,對于這種信息安全或者機密泄露的事件,我們一定要注意,沒發(fā)現(xiàn),那就是芝麻綠豆的事情,被發(fā)現(xiàn),那你的人生可能會變得不可預知了。
如何找回被覆蓋的代碼?
這個,找到你之前的commit,拉倒pull本地,然后創(chuàng)建一個新的branch,然后和最新的branch進行merge,人工對代碼進行手工的操作來同時保留雙方的代碼或者和沖突的開發(fā)者討論如何解決這個沖突并保留雙方代碼。
任何版本控制工具,這個是基本功能,上網(wǎng)收一下,有很多解決方案的。
如何解決git提交代碼沖突?
你pull下來git會提示有沖突啊,然后你沖突的文件,尋找用=====隔開的兩部分,HEAD是你的內(nèi)容,另外一部分是repos的內(nèi)容,然后手工修改保留你想要的部分,在git add 和git commit然后再git push上去就好了。多人協(xié)作經(jīng)常都會遇到?jīng)_突的,要習慣解決沖突的值……);Range_lookup為一邏輯值,如果
git的pull和clone有什么區(qū)別?
git clone是把整個git項目拷貝下來,包括里面的日志信息,git項目里的分支,你也可以直接切換、使用里面的分支等等。clone是本地沒有repository時,將遠程repository整個下載過來。pull是本地有repository時,將遠程repository里新的commit數(shù)據(jù)(如有的話)下載過來,并且與本地代碼merge。
git pull相當于git fetch和git merge。其意思是先從遠程下載git項目里的文件,然后將文件與本地的分支進行merge。pull是本地有repository時,將遠程repository里新的commit數(shù)據(jù)(如有的話)下載過來,并且與本地代碼merge。clone是本地沒有repository時,將遠程repository整個下載過來。
Git push,merge,pull,fetch,rebase各自在什么場景下使用?
基本上順序是這樣的:
你修改好了代碼,先要提交
git commit -am “commit message"
然后有兩種方法來把你的代碼和遠程倉庫中的代碼合并
a. git pull這樣就直接把你本地倉庫中的代碼進行更新但問題是可能會有沖突(conflicts),個人不推薦
b. 先git fetch origin(把遠程倉庫中origin最新代碼取回),再git merge origin/master(把本地代碼和已取得的遠程倉庫最新代碼合并),如果你的改動和遠程倉庫中最新代碼有沖突,會提示,再去一個一個解決沖突,最后再從1開始
如果沒有沖突,git push origin master,把你的改動推送到遠程倉庫中
至于rebase很容易和merge混淆,因為就結(jié)果而言,兩條命令是類似的,具體請看
http://git-scm.com/book/zh/ch3-6.html
svn提交代碼會造成沖突?那么git代碼提交呢?
你可以稍微補充一下這一塊的知識哦,先把自己寫的代碼add和commit提交至版本庫,然后pull一下服務器上的代碼,status查看一下有沒有沖突,沒有直接push,有的話解決status中提示的沖突,重新add.commit.push提交至遠程版本庫。